#ifndef INPUT_DR
#define INPUT_DR

#include <SDL.h>

//key defs
#define	KEY_BACKSPACE	0
#define	KEY_TAB	1
#define	KEY_CLEAR	2
#define	KEY_RETURN	3
#define	KEY_PAUSE	4
#define	KEY_ESCAPE	5
#define	KEY_SPACE	6
#define	KEY_EXCLAIM	7
#define	KEY_QUOTEDBL	8
#define	KEY_HASH	9
#define	KEY_DOLLAR	10
#define	KEY_AMPERSAND	11
#define	KEY_QUOTE	12
#define	KEY_LEFTPAREN	13
#define	KEY_RIGHTPAREN	14
#define	KEY_ASTERISK	15
#define	KEY_PLUS	16
#define	KEY_COMMA	17
#define	KEY_MINUS	18
#define	KEY_PERIOD	19
#define	KEY_SLASH	20
#define	KEY_0	21
#define	KEY_1	22
#define	KEY_2	23
#define	KEY_3	24
#define	KEY_4	25
#define	KEY_5	26
#define	KEY_6	27
#define	KEY_7	28
#define	KEY_8	29
#define	KEY_9	30
#define	KEY_COLON	31
#define	KEY_SEMICOLON	32
#define	KEY_LESS	33
#define	KEY_EQUALS	34
#define	KEY_GREATER	35
#define	KEY_QUESTION	36
#define	KEY_AT	37
#define	KEY_LEFTBRACKET	38
#define	KEY_BACKSLASH	39
#define	KEY_RIGHTBRACKET	40
#define	KEY_CARET	41
#define	KEY_UNDERSCORE	42
#define	KEY_BACKQUOTE	43
#define	KEY_a	44
#define	KEY_b	45
#define	KEY_c	46
#define	KEY_d	47
#define	KEY_e	48
#define	KEY_f	49
#define	KEY_g	50
#define	KEY_h	51
#define	KEY_i	52
#define	KEY_j	53
#define	KEY_k	54
#define	KEY_l	55
#define	KEY_m	56
#define	KEY_n	57
#define	KEY_o	58
#define	KEY_p	59
#define	KEY_q	60
#define	KEY_r	61
#define	KEY_s	62
#define	KEY_t	63
#define	KEY_u	64
#define	KEY_v	65
#define	KEY_w	66
#define	KEY_x	67
#define	KEY_y	68
#define	KEY_z	69
#define	KEY_DELETE	70
#define	KEY_KP0	167
#define	KEY_KP1	168
#define	KEY_KP2	169
#define	KEY_KP3	170
#define	KEY_KP4	171
#define	KEY_KP5	172
#define	KEY_KP6	173
#define	KEY_KP7	174
#define	KEY_KP8	175
#define	KEY_KP9	176
#define	KEY_KP_PERIOD	177
#define	KEY_KP_DIVIDE	178
#define	KEY_KP_MULTIPLY	179
#define	KEY_KP_MINUS	180
#define	KEY_KP_PLUS	181
#define	KEY_KP_ENTER	182
#define	KEY_KP_EQUALS	183
#define	KEY_UP	184
#define	KEY_DOWN	185
#define	KEY_RIGHT	186
#define	KEY_LEFT	187
#define	KEY_INSERT	188
#define	KEY_HOME	189
#define	KEY_END	190
#define	KEY_PAGEUP	191
#define	KEY_PAGEDOWN	192
#define	KEY_F1	193
#define	KEY_F2	194
#define	KEY_F3	195
#define	KEY_F4	196
#define	KEY_F5	197
#define	KEY_F6	198
#define	KEY_F7	199
#define	KEY_F8	200
#define	KEY_F9	201
#define	KEY_F10	202
#define	KEY_F11	203
#define	KEY_F12	204
#define	KEY_F13	205
#define	KEY_F14	206
#define	KEY_F15	207
#define	KEY_NUMLOCK	208
#define	KEY_CAPSLOCK	209
#define	KEY_SCROLLOCK	210
#define	KEY_RSHIFT	211
#define	KEY_LSHIFT	212
#define	KEY_RCTRL	213
#define	KEY_LCTRL	214
#define	KEY_RALT	215
#define	KEY_LALT	216
#define	KEY_RMETA	217
#define	KEY_LMETA	218
#define	KEY_LSUPER	219
#define	KEY_RSUPER	220
#define	KEY_MODE	221
#define	KEY_COMPOSE	222
#define	KEY_HELP	223
#define	KEY_PRINT	224
#define	KEY_SYSREQ	225
#define	KEY_BREAK	226
#define	KEY_MENU	227
#define	KEY_POWER	228
#define	KEY_EURO	229
#define	KEY_UNDO	230
#define	KEY_EMP_136	135
#define	KEY_EMP_137	136
#define	KEY_EMP_138	137
#define	KEY_EMP_139	138
#define	KEY_EMP_140	139
#define	KEY_EMP_141	140
#define	KEY_EMP_142	141
#define	KEY_EMP_143	142
#define	KEY_EMP_144	143
#define	KEY_EMP_145	144
#define	KEY_EMP_146	145
#define	KEY_EMP_147	146
#define	KEY_EMP_148	147
#define	KEY_EMP_149	148
#define	KEY_EMP_150	149
#define	KEY_EMP_151	150
#define	KEY_EMP_152	151
#define	KEY_EMP_153	152
#define	KEY_EMP_154	153
#define	KEY_EMP_155	154
#define	KEY_EMP_156	155
#define	KEY_EMP_157	156
#define	KEY_EMP_158	157
#define	KEY_EMP_159	158
#define	KEY_EMP_160	159
#define	KEY_EMP_161	160
#define	KEY_EMP_162	161
#define	KEY_EMP_163	162
#define	KEY_EMP_164	163
#define	KEY_EMP_165	164
#define	KEY_EMP_166	165
#define	KEY_EMP_167	166
#define	KEY_EMP_168	167
#define	KEY_EMP_169	168
#define	KEY_EMP_170	169
#define	KEY_EMP_171	170
#define	KEY_EMP_172	171
#define	KEY_EMP_173	172
#define	KEY_EMP_174	173
#define	KEY_EMP_175	174
#define	KEY_EMP_176	175
#define	KEY_EMP_177	176
#define	KEY_EMP_178	177
#define	KEY_EMP_179	178
#define	KEY_EMP_180	179
#define	KEY_EMP_181	180
#define	KEY_EMP_182	181
#define	KEY_EMP_183	182
#define	KEY_EMP_184	183
#define	KEY_EMP_185	184
#define	KEY_EMP_186	185
#define	KEY_EMP_187	186
#define	KEY_EMP_188	187
#define	KEY_EMP_189	188
#define	KEY_EMP_190	189
#define	KEY_EMP_191	190
#define	KEY_EMP_192	191
#define	KEY_EMP_193	192
#define	KEY_EMP_194	193
#define	KEY_EMP_195	194
#define	KEY_EMP_196	195
#define	KEY_EMP_197	196
#define	KEY_EMP_198	197
#define	KEY_EMP_199	198
#define	KEY_EMP_200	199
#define	KEY_EMP_201	200
#define	KEY_EMP_202	201
#define	KEY_EMP_203	202
#define	KEY_EMP_204	203
#define	KEY_EMP_205	204
#define	KEY_EMP_206	205
#define	KEY_EMP_207	206
#define	KEY_EMP_208	207
#define	KEY_EMP_209	208
#define	KEY_EMP_210	209
#define	KEY_EMP_211	210
#define	KEY_EMP_212	211
#define	KEY_EMP_213	212
#define	KEY_EMP_214	213
#define	KEY_EMP_215	214
#define	KEY_EMP_216	215
#define	KEY_EMP_217	216
#define	KEY_EMP_218	217
#define	KEY_EMP_219	218
#define	KEY_EMP_220	219
#define	KEY_EMP_221	220
#define	KEY_EMP_222	221
#define	KEY_EMP_223	222
#define	KEY_EMP_224	223
#define	KEY_EMP_225	224
#define	KEY_EMP_226	225
#define	KEY_EMP_227	226
#define	KEY_EMP_228	227
#define	KEY_EMP_229	228
#define	KEY_EMP_230	229
#define	KEY_EMP_231	230
#define	KEY_EMP_232	231
#define	KEY_EMP_233	232
#define	KEY_EMP_234	233
#define	KEY_EMP_235	234
#define	KEY_EMP_236	235
#define	KEY_EMP_237	236
#define	KEY_EMP_238	237
#define	KEY_EMP_239	238
#define	KEY_EMP_240	239
#define	KEY_EMP_241	240
#define	KEY_EMP_242	241
#define	KEY_EMP_243	242
#define	KEY_EMP_244	243
#define	KEY_EMP_245	244
#define	KEY_EMP_246	245
#define	KEY_EMP_247	246
#define	KEY_EMP_248	247
#define	KEY_EMP_249	248
#define	KEY_EMP_250	249
#define	KEY_EMP_251	250
#define	KEY_EMP_252	251
#define	KEY_EMP_253	252
#define	KEY_EMP_254	253
#define	NEW_LINE	254
#define	KEY_NULL	255

class Input{
public:
    Input();
    void UpdateKey();
    //key get functions
    unsigned char GetLastKey();
    bool IsKeyDown();
    bool IsKeyUp();
    bool IsQuit();
private:
    unsigned char key;
    bool KeyU,KeyD,Quit;
    SDL_Event Event;
};

#endif
